package algorithm_learn.B;

public class Code_PrintB {
    //打印出数的32位形式
    public static void print(int num){
        for (int i = 31;i>=0;i--){
            //左移得到位数 再进行一个与&运算 1 1 才是 1。
            System.out.print((num & (1<<i)) == 0?"0":"1");
        }
        System.out.println();
    }
    public static void main(String[] args) {
        //int 32位 long 64位
        //int num = 3;
        //print(num);

        //int a = Integer.MAX_VALUE;
        //System.out.println(a);
        //32位会保留最高位 作为符号位
        //print(a);

//        int a = 12312312;
//        int b = 524234;
//        print(a);
//        print(b);
//        System.out.println("---------------");
//        print(a|b);
//        print(a&b);

//        int a = Integer.MIN_VALUE;
//        print(a);
//        //右移后用符号位来补
//        print(a>>1);
//        //右移后用补0
//        print(a>>>1);

        //负数写法
//        int c = 5;
//        //1
//        int d = -c;
//        //2
//        d = (~c+1);
//        System.out.println(c);
//        System.out.println(d);

        //系统最小取反加一(相反数) 回到原数 (取反加一会进位，进位不算符号位（负数的情况）)
        int a = Integer.MIN_VALUE;
        print(a);
        print(~a+1);
        print(-a);
    }
}
